iT邦幫忙

2022 iThome 鐵人賽

DAY 30
0
Mobile Development

從零開始的Swift開發心路歷程2系列 第 30

【從零開始的Swift開發心路歷程2-Day30】doodle jump小遊戲設計(6)記錄分數與最佳分數

  • 分享至 

  • xImage
  •  

昨天我們成功判定遊戲失敗並且讓畫面跳轉到失敗畫面
今天我們就來完成這個遊戲最後的功能-紀錄你的分數吧!
首先呢,我們先宣告分數及最佳分數的節點、值
還有用來儲存最佳分數的UserDefaults

let scoreLabel = SKLabelNode()
let bestScoreLabel = SKLabelNode()
let defaults = UserDefaults.standard
var score = 0
var bestScore = 0

在func didMove中新增分數及最佳分數節點的屬性

scoreLabel.position.x = 100
scoreLabel.zPosition = 20
scoreLabel.fontName = "Chalkduster"
scoreLabel.fontSize = 32
scoreLabel.fontColor = .black
scoreLabel.text = "Score : \(score)"
addChild(scoreLabel)
        
bestScore = defaults.integer(forKey: "best")
bestScoreLabel.position.x = 670
bestScoreLabel.zPosition = 20
bestScoreLabel.fontName = "Chalkduster"
bestScoreLabel.fontSize = 32
bestScoreLabel.fontColor = .black
bestScoreLabel.text = "Bestscore : \(bestScore)"
addChild(bestScoreLabel)

在func update中固定分數與最佳分數的與人物相對的y座標

scoreLabel.position.y = player.position.y + 850
bestScoreLabel.position.y = player.position.y + 850

再來就是分數增加的function,並且在人物與平台接觸時的判定加入addScore()

func addScore(){
    score = score + 1
    scoreLabel.text = "Score : \(score)"
}

而當遊戲結束時,需要判斷你的分數是否大於最佳分數,如果大於的話將此分數設定成最佳分數

if score > bestScore{
    bestScore = score
    defaults.set(bestScore, forKey: "best")
}

如此一來,Doodle Jump小遊戲就完成啦!!
附上遊戲進行中畫面

而今天也是鐵人賽的最後一篇文章,老實說這個學期其實還蠻忙的
文章通常都是當天生出來,每天都在與時間賽跑,終於熬過30天成功完賽啦!!
如果有機會的話,就明年再見囉~


上一篇
【從零開始的Swift開發心路歷程2-Day29】doodle jump小遊戲設計(5)Game Over!
系列文
從零開始的Swift開發心路歷程230
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言